Interactive display overlay systems and related methods

ABSTRACT

In various embodiments, an interactive display overlay system is configured to serve as a gatekeeper for detected inputs on an interactive display screen (e.g., such as an interactive whiteboard or touch screen display) that is displaying a transparent overlay layer over an underlying software application. In various embodiments, the system is configured to detect an input at a particular location on the interactive display screen and determine whether there is a widget at that particular location on the transparent overlay layer before passing the input on to the underlying software application. In particular embodiments, the system is configured to modify inputs detected at the overlay layer that are proximate to a widget to an edge of the widget prior to passing on modified input data to the underlying software application.

BACKGROUND

Drawing and drafting in computing applications can be cumbersome anddifficult, particularly for those inexperienced with drawing or draftingprograms. Replicating a pen-and-paper drawing experience may be desirousto some users of computer drawing applications. Accordingly, there is aneed for systems and methods that address these difficulties and desiresin addition to other deficiencies found in prior art systems.

SUMMARY

An interactive display system, according to various embodiments,comprises one or more processors and an interactive display deviceoperatively coupled to the one or more processors. In particularembodiments, the interactive display system is configured for: (1)providing an interactive overlay application for use with theinteractive display device, the interactive overlay applicationcomprising one or more widgets and being configured to run with one ormore underlying software applications in the background on theinteractive display system; (2) detecting an input on the interactivedisplay device; (3) determining input data related to the input, theinput data comprising at least a location of the input; transmitting afirst packet comprising the input data to the interactive overlayapplication, the first packet comprising a private packet; (4)determining, using the interactive overlay application, whether thelocation of the input comprises the one or more widgets on theinteractive display device; (a) in response to determining that thelocation of the input comprises one widget of the one or more widgets,modifying the one widget based on the input data; (b) in response todetermining that the location of the input does not comprise the one ormore widgets: (i) determining, by the interactive overlay application,whether the location of the input is within a particular distance of theone or more widgets and in response to determining that the location ofthe input is within the particular distance of one of the one or morewidgets and the location of the input does not comprise the one widget:(1) modifying the input location to a modified input location thatcorresponds to an edge of the one widget adjacent the input location;(2) modifying the first packet to a third packet comprising the modifiedinput location, the third packet comprising a standard packet; and (3)transmitting the third packet to the one or more underlying softwareapplications; and (ii) in response to determining that the location ofthe input is not within the particular distance of the one widget andthe location of the input does not comprise the one widget: (1)modifying the first packet to a second packet, the second packetcomprising a standard packet; and transmitting the second packet to theone or more underlying software applications.

An interactive display system, according to various embodiments,comprises one or more processors; and an interactive display deviceoperatively coupled to the one or more processors. In particularembodiments, the interactive display system is configured for: (1)providing an interactive overlay application for use with theinteractive display device, the interactive overlay applicationcomprising one or more widgets and being configured to run with one ormore underlying software applications in the background on theinteractive display system; (2) detecting an input on the interactivedisplay device; (3) determining input data related to the input, theinput data comprising at least a location of the input; (4) transmittingthe input data to the interactive overlay application according to afirst protocol; determining, using the interactive overlay application,whether the location of the input comprises the one or more widgets onthe interactive display device; (5) in response to determining that thelocation of the input comprises the one or more widgets, modifying theone or more widgets based on the input data; and (6) in response todetermining that the location of the input does not comprise the one ormore widgets: (a) modifying the input data based on a second protocol toformatted input data; and (b) transmitting the formatted input data tothe one or more underlying software applications.

A system for providing virtual tools on a touch enabled display,according to various embodiments, comprises at least on processor and atouch enabled display operatively coupled to the at least one processor.In particular embodiments, the touch enabled display is adapted to: (1)detect contact points at a surface of the touch enabled display; (2)send data related to one or more contact points: (a) in a first mode toone or more applications running on the at least one processor; and (b)in a second mode to a virtual tool application running on the at leastone processor in the background. In various embodiments, the at leastone processor is configured for: (1) receiving an input by a user thatactivates a virtual tool application; (2) at least partially in responseto receiving the input, running the virtual tool application in thebackground; and (3) at least partially in response to running thevirtual tool application, changing the touch enabled display from thefirst mode to the second mode such that data related to the one or morecontact points are sent to the virtual tool application.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of an interactive display overlay system aredescribed below. In the course of this description, reference will bemade to the accompanying drawings, which are not necessarily drawn toscale, and wherein:

FIG. 1 is a block diagram of an interactive display overlay system inaccordance with an embodiment of the present system;

FIG. 2 is a schematic diagram of a computer, such as the interactivedisplay overlay server of FIG. 1, that is suitable for use in variousembodiments;

FIG. 3 depicts a flow chart that generally illustrates various stepsexecuted by an input determination and interpretation module that, forexample, may be executed by the one or more touch screen displays or oneor more interactive displays of FIG. 1;

FIG. 4 depicts a flow chart that generally illustrates various stepsexecuted by an Input Coordinate Modification Module that, for example,may be executed by the one or more interactive displays or one or moretouch screen displays of FIG. 1; and

FIGS. 5-11 are screen displays which generally illustrate a userinterface according to various embodiments of the interactive overlaysystem.

DETAILED DESCRIPTION

Various embodiments now will be described more fully hereinafter withreference to the accompanying drawings. It should be understood that theinvention may be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein. Rather, theseembodiments are provided so that this disclosure will be thorough andcomplete, and will fully convey the scope of the invention to thoseskilled in the art. Like numbers refer to like elements throughout.

Overview

In various embodiments, an interactive display overlay system isconfigured to serve as a gatekeeper for detected inputs on aninteractive display screen (e.g., such as an interactive whiteboard ortouch screen display) that is displaying a transparent overlay layerover an underlying software application. In various embodiments, thesystem is configured to detect an input at a particular location on theinteractive display screen and determine whether there is a widget atthat particular location on the transparent overlay layer before passingthe input on to the underlying software application.

The system may, for example: (1) detect an input at a particularlocation on the interactive display screen; (2) transmit data related tothe input location to an interactive overlay application (e.g., transmita private data packet to the interactive overlay application); (3)determine, using the interactive overlay application, whether the inputlocation comprises a widget on the transparent overlay layer; (4) modify(e.g., transform) the data related to the input location (e.g., modifythe private data packet to a standard data packet) in response todetermining that the input location does not comprise a widget on thetransparent overlay layer; and (5) transmit the data related to theinput location to the underlying software application. In variousembodiments, the system may determine whether a location of the detectedinput is within a particular distance of a widget on the transparentoverlay layer but does not comprise the widget and, in response todetermining that the location of the detected input is within theparticular distance of the widget, but does not comprise the widget,modifying the detected input location to a modified location thatcorresponds to an edge of the widget adjacent the location of thedetected input (e.g., the actual input location). In such embodiments,this may enable users to utilize widgets and other tools to draw moreprecisely in particular software applications on devices where precisionmay be difficult (e.g., such as when drawings with a finger, anelectronic pen, etc. using a touch-screen display).

In particular embodiments, the interactive display overlay system isconfigured to provide one or more widgets as part of a selectivelyinteractive overlay. In particular embodiments, the interactive displayoverlay system comprises an interactive touch screen display such as,for example, an interactive touch screen display panel, an interactivewhiteboard, an ACTIVWALL™ touch display manufactured by Promethean, Ltdof Blackburn, England, etc. In various embodiments, the interactivetouch screen display may be configured to run one or more softwareapplications on one or more suitable operating systems in addition to aselectively interactive overlay layer running in the background (e.g.,via an interactive overlay application) which may include, for example,one or more widgets that the interactive display screen is configured todisplay as an overlay to one or more software applications running onthe interactive display.

In various embodiments, the selectively interactive overlay layer issubstantially transparent (e.g., transparent) such that a user viewingthe interactive touch screen display can view at least a portion of theone or more software applications (e.g., running on the one or moresuitable operating systems) through the selectively interactive overlaylayer. Said another way, when the selectively interactive overlay layeris running, the system changes from a first mode in which input receivedon the interactive touch display is transmitted to the one or moresoftware applications running on the system into a second mode wheretouch input received on the interactive touch display is sent to theinteractive overlay application without affecting the focus of the oneor more applications. In particular embodiments, the selectivelyinteractive overlay layer comprises one or more indicia configured toenable a user to select a particular one of the one or more widgets foruse within the interactive overlay layer. In various embodiments, theinteractive display overlay system is configured to enable a user to:(1) manipulate or otherwise interact with the one or more widgets thatmake up the interactive overlay layer without affecting the focus of theone or more software applications; (2) manipulate or otherwise interactwith one or more underlying software applications; and (3) use the oneor more widgets to interact with and/or manipulate the one or moreunderlying software applications.

In various embodiments, the interactive overlay layer may serve as afilter configured to distinguish among; (1) an input intended tointeract with the one or more widgets; (2) an input intended to interactwith the underlying software application or operating system; and/or (3)an input intended to interact with the underlying software applicationor operating system using the one or more widgets (e.g., drawing a curveusing the widget in the one or more software applications). The inputmay include, for example, a touch input (e.g., via a touch screen ortouch pad), a pointer input (e.g., such as with a mouse or other inputdevice), an input from an electronic pen or other stylus device, etc. Invarious embodiments, the system is configured to determine a location ofthe input on the interactive display and a type of input (e.g., touch,pointer, stylus, etc.).

In various embodiments, the system is configured to: (1) intercept aninput at the interactive overlay layer; (2) determine whether the inputwas intended for the interactive overlay layer and modify theinteractive overlay layer according to the input; and (3) in response todetermining that the input was not intended for the interactive overlaylayer, transmit (e.g., send) the input data to the underlying softwareapplication. In particular embodiments, the system is then configured tomodify the underlying software application based on the input. In stillother embodiments, the interactive overlay layer is configured tointerpret inputs as a private event and the underlying softwareapplication is configured to interpret data as a native event. In suchembodiments, the system is configured to: (1) interpret input data as aprivate event at the interactive overlay layer; (2) determine, based onthe input data, whether the input was intended for the interactiveoverlay layer; and (3) in response to determining that the input was notintended for the interactive overlay layer, transmit (e.g., send) theinput data to the underlying software application as a native event.

In various embodiments, the one or more widgets may include one or moresuitable drafting tools such as, for example, a compass, a ruler orother suitable straight edge, a protractor, a drafting T-square, adrafting triangle, a drafting scale, a French curve ruler, a ship curvetool, an arc ruler, or any other suitable drafting tool, etc. Inparticular embodiments, the interactive display system is configured toenable a user of the interactive display system to manipulate the one ormore widgets using one or more suitable inputs. In particularembodiments, the interactive display system may, for example, resize aparticular one of the one or more widgets, adjust an orientation orposition of a particular one of the one or more widgets relative to anunderlying software application running on the interactive display, ortake any other suitable action in response to a particular input from auser of the interactive display system. The system may, for example,resize a particular widget in response to: (1) a user placing a firstfinger on a first portion of the interactive display that is displayingthe widget (e.g., adjacent a first portion of the widget), (2) the userplacing a second finger on a second portion of the interactive displaythat is displaying the widget (e.g., adjacent a second portion of thewidget); and (3) the user moving their first finger and their secondfinger away from one another while maintaining contact between theirfirst and second fingers and the interactive display. In such anexample, the system may, for example, resize the widget based on thedistance that the user moved their first finger away from their secondfinger. In particular embodiments, the system is configured to enablethe user to interact with or otherwise manipulate the one or morewidgets by, for example: (1) resizing the one or more widgets; (2)moving the one or more widgets within the interactive overlay layer; (3)adjust an orientation of the one or more widgets relative to theinteractive overlay layer (e.g., rotating the widget); and/or (4)manipulate, move, or otherwise adjust the one or more widgets in anyother suitable manner.

In particular embodiments, the system is configured to detect an inputthat is within a particular distance of a widget on the overlay layerbut that does not comprise the widget (e.g., the touch is not on thewidget), modify the input location to a location that corresponds to anedge of the widget adjacent the actual input location, modify datarelated to the input including the modified input location to a seconddata type, and transmit the modified data to an underlying softwareapplication. As is described more fully below, input locationmodification by the system may, for example, enable users to use widgetsto interact with underlying software applications by using one or moreedges of the widget.

Exemplary Technical Platforms

As will be appreciated by one skilled in the relevant field, the presentinvention may be, for example, embodied as a computer system, a method(e.g., a computer-implemented method), or a computer program product.Accordingly, various embodiments may take the form of an entirelyhardware embodiment, an entirely software embodiment, or an embodimentcombining software and hardware aspects. Furthermore, particularembodiments may take the form of a computer program product stored on acomputer-readable storage medium (e.g., a nontransitorycomputer-readable medium) having computer-readable instructions (e.g.,software) embodied in the storage medium. Various embodiments may takethe form of web-implemented computer software. Any suitablecomputer-readable storage medium may be utilized including, for example,hard disks, compact disks, DVDs, optical storage devices, and/ormagnetic storage devices.

Various embodiments are described below with reference to block diagramsand flowchart illustrations of methods (e.g., computer-implementedmethods), apparatuses (e.g., systems) and computer program products. Itshould be understood that each block of the block diagrams and flowchartillustrations, and combinations of blocks in the block diagrams andflowchart illustrations, respectively, can be implemented by a computerexecuting computer program instructions. These computer programinstructions may be loaded onto a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions which execute on thecomputer or other programmable data processing apparatus to create meansfor implementing the functions specified in the flowchart block orblocks.

These computer program instructions may also be stored in acomputer-readable memory that can direct a computer or otherprogrammable data processing apparatus to function in a particularmanner such that the instructions stored in the computer-readable memoryproduce an article of manufacture that is configured for implementingthe function specified in the flowchart block or blocks. The computerprogram instructions may also be loaded onto a computer or otherprogrammable data processing apparatus to cause a series of operationalsteps to be performed on the computer or other programmable apparatus toproduce a computer implemented process such that the instructions thatexecute on the computer or other programmable apparatus provide stepsfor implementing the functions specified in the flowchart block orblocks.

Accordingly, blocks of the block diagrams and flowchart illustrationssupport combinations of mechanisms for performing the specifiedfunctions, combinations of steps for performing the specified functions,and program instructions for performing the specified functions. Itshould also be understood that each block of the block diagrams andflowchart illustrations, and combinations of blocks in the blockdiagrams and flowchart illustrations, can be implemented by specialpurpose hardware-based computer systems that perform the specifiedfunctions or steps, or combinations of special purpose hardware andother hardware executing appropriate computer instructions.

Example System Architecture

FIG. 1 is a block diagram of an interactive display overlay system 10 a,10 b according to particular embodiments. As may be understood from thisfigure, an interactive display overlay system 10 a, according to a firstembodiment, comprises: (1) one or more interactive display devices 152that comprise an interactive whiteboard 160 and an interactive projector162 (e.g., such as a Promethean BrightLink multimedia projector); and(2) one or more computing devices 154 operatively coupled to the one ormore interactive display devices.

In various embodiments, the interactive projector 162 is configured todisplay (e.g., on the interactive whiteboard 160) one or more imagesfrom the one or more computing devices 154, which the interactiveprojector 162 is coupled to. In particular embodiments, the interactiveprojector 162 is configured to project the one or more images onto anysuitable surface and further configured to act as an interactive displayfor the one or more connected computing devices. In various embodiments,the interactive display overlay system 10 a further comprises one ormore imaging devices (e.g., one or more cameras) used to detect alocation of an input on the interactive whiteboard 160 based on aninfrared grid projected on the interactive whiteboard 160.

In various embodiments, the interactive display overlay system 10 a mayutilize any suitable interactive whiteboard 160, such as, for example:(1) an infrared scan (e.g., IR touch) whiteboard, in which theinteractive display overlay system 10 a triangulates a location of aninput based on interference of an input device (e.g., amarker/pen/finger) with infrared light at a surface of the interactivewhiteboard 160; (2) a resistive touch-based interactive whiteboard, inwhich the interactive display overlay system 10 a determines a touchpoint location electronically in response to a membrane stretched over asurface of the interactive whiteboard 160 deforming under pressure tomake contact with a conducting back plate; (3) an electromagneticpen-based interactive whiteboard, which may include, for example, anarray of wires embedded behind a solid surface of the interactivewhiteboard 160 that interacts with a coil in an input device such as apen to determine a location of input on the board; and/or (4) any othersuitable interactive whiteboard 160. In various embodiments, theinteractive whiteboard 160 and/or the interactive projector 162 mayserve as an input device for the interactive display overlay system 10a.

In particular embodiments, the interactive projector 162 is configuredto detect input via the projected one or more images, for example, viaan interactive pointer pen or other suitable input device (e.g., such asa user or users' finger or fingers), etc. In particular embodiments, theinteractive projector 162 (and/or the interactive whiteboard 160) isconfigured to detect a plurality of simultaneous inputs (e.g., from aplurality of users). In various embodiments, the interactive projector162 (and/or the interactive whiteboard 160) is configured to enable auser to interact with the one or more projected images as the user wouldinteract with any other computing display device (e.g., by drawing onthe one or more projected images), etc. In still other embodiments, theinteractive projector 162 includes one or more computing components(e.g., one or more processors and memory) such that the interactiveprojector 162 embodies a stand-alone computing device.

In various other embodiments of an interactive display overlay system 10b, the interactive display overlay system 10 b comprises one or moretouch screen display devices 156, which may, for example, comprise anysuitable touch screen device configured to receive input via contact onthe display device (e.g., via a user's finger or other body part, via astylus or other pen-like device, etc.). For example, in variousembodiments, the one or more touch screen display devices 156 compriseone or more resistive touch screen displays (e.g., one or more 5-wireresistive touch screen displays), one or more surface capacitive touchscreen displays, one or more projected capacitive touch screen displays,one or more surface acoustic wave touch screen displays, one or moreinfrared touch screen displays, or any other suitable touch screendisplay. In particular embodiments, the one or more touch screen displaydevices 156 comprise one or more processors and memory. In suchembodiments, the one or more touch screen display devices 156 maycomprise stand-alone computing devices such as handheld computing device(e.g., tablet computers or smartphones), wall mounted display devices(e.g., such as touch-enabled computerized LED and/or LCD displays), etc.

In particular embodiments, the interactive display overlay system 10 a,10 b is configured to run interactive overlay software, such as theinteractive overlay software described herein, locally on a device onwhich a user is utilizing the interactive overlay display software. Forexample, in one embodiment of an interactive display overlay system 10a, one or more computing devices 154 may store an interactive overlaysoftware application on local memory associated with the one or morecomputing devices 154, execute software instructions from theinteractive overlay software application using one or more localprocessors associated with the one or more computing devices 154, detectinputs locally using the one or more interactive display devices 152,etc. In still other embodiments of the interactive display overlaysystem 10 b, one or more touch screen display devices 156 may store aninteractive overlay software application on local memory associated withthe one or more touch screen display devices 156, execute softwareinstructions from the interactive overlay software application using oneor more local processors associated with the one or more touch screendisplay devices 156, detect inputs via a touch screen enabled displayassociated with the one or more touch screen display devices 156, etc.

In various other embodiments, an interactive display overlay system 10a, 10 b may utilize one or more suitable cloud computing techniques inorder to execute overlay software, underlying software, store and accessone or more documents, etc. In such embodiments, one or more computernetworks 115 may facilitate communication between an interactive displayoverlay server 100, a database 140, and the interactive display overlaysystem 10 a, 10 b. For example, the one or more networks 115 mayfacilitate communication between the one or more computing devices 154or the one or more touch screen display devices 156 and the interactivedisplay overlay server 100 in order to execute an interactive overlaysoftware application or a suitable underling software application atleast partially stored on the interactive display overlay server 100.The one or more networks 115 may further facilitate access between theone or more computing devices 154 or the one or more touch screendisplay devices 156 and a suitable document stored in the remotedatabase 140 (e.g., one or more remote databases). The one or morecomputer networks 115 may include any of a variety of types of wired orwireless computer networks such as the Internet, a private intranet, amesh network, a public switch telephone network (PSTN), or any othertype of network (e.g., a network that uses Bluetooth or near fieldcommunications to facilitate communication between computers). Thecommunication link between interactive display overlay server 100, thedatabase 140, and the one or more computing devices 154, 156 may be, forexample, implemented via a Local Area Network (LAN) or via the Internet.

FIG. 2 illustrates a diagrammatic representation of a computerarchitecture 120 that can be used within the interactive display overlaysystem 10 a, 10 b, for example, as a client computer (e.g., the one ormore computing devices 154, 156 shown in FIG. 1), or as a servercomputer (e.g., interactive display overlay server 100 shown in FIG. 1).In particular embodiments, the computer 120 may be suitable for use as acomputer within the context of the interactive display overlay system 10a, 10 b that is configured to receive input from an interactive displaydevice (e.g., such as a touch screen display, interactive whiteboard160, etc.), determine whether the input is intended for an overlay, andin response to determining that the input is not intended for theoverlay, passing the input through to an underlying software program.

In particular embodiments, the computer 120 may be connected (e.g.,networked) to other computers in a LAN, an intranet, an extranet, and/orthe Internet. As noted above, the computer 120 may operate in thecapacity of a server or a client computer in a client-server networkenvironment, or as a peer computer in a peer-to-peer (or distributed)network environment. The Computer 120 may be a desktop personal computer(PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant(PDA), a cellular telephone, a web appliance, a server, a networkrouter, a switch or bridge, or any other computer capable of executing aset of instructions (sequential or otherwise) that specify actions to betaken by that computer. Further, while only a single computer isillustrated, the term “computer” shall also be taken to include anycollection of computers that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

An exemplary computer 120 includes a processing device 202, a mainmemory 204 (e.g., read-only memory (ROM), flash memory, dynamic randomaccess memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM(RDRAM), etc.), a static memory 206 (e.g., flash memory, static randomaccess memory (SRAM), etc.), and a data storage device 218, whichcommunicate with each other via a bus 232.

The processing device 202 represents one or more general-purposeprocessing devices such as a microprocessor, a central processing unit,or the like. More particularly, the processing device 202 may be acomplex instruction set computing (CISC) microprocessor, reducedinstruction set computing (RISC) microprocessor, very long instructionword (VLIW) microprocessor, or processor implementing other instructionsets, or processors implementing a combination of instruction sets. Theprocessing device 202 may also be one or more special-purpose processingdevices such as an application specific integrated circuit (ASIC), afield programmable gate array (FPGA), a digital signal processor (DSP),network processor, or the like. The processing device 202 may beconfigured to execute processing logic 226 for performing variousoperations and steps discussed herein.

The computer 120 may further include a network interface device 208. Thecomputer 120 also may include a video display unit 210 (e.g., a liquidcrystal display (LCD), a projector, a cathode ray tube (CRT), anysuitable display described herein, or any other suitable display), analphanumeric input device 212 (e.g., a keyboard), a cursor controldevice 214 (e.g., a mouse, stylus, etc.), and a signal generation device216 (e.g., a speaker).

The data storage device 218 may include a non-transitorycomputer-accessible storage medium 230 (also known as a non-transitorycomputer-readable storage medium or a non-transitory computer-readablemedium) on which is stored one or more sets of instructions (e.g.,software 222) embodying any one or more of the methodologies orfunctions described herein. The software 222 may also reside, completelyor at least partially, within the main memory 204 and/or within theprocessing device 202 during execution thereof by the computer 120—themain memory 204 and the processing device 202 also constitutingcomputer-accessible storage media. The software 222 may further betransmitted or received over a network 115 via a network interfacedevice 208.

While the computer-accessible storage medium 230 is shown in anexemplary embodiment to be a single medium, the term“computer-accessible storage medium” should be understood to include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore sets of instructions. The term “computer-accessible storage medium”should also be understood to include any medium that is capable ofstoring, encoding or carrying a set of instructions for execution by thecomputer and that cause the computer to perform any one or more of themethodologies of the present invention. The term “computer-accessiblestorage medium” should accordingly be understood to include, but not belimited to, solid-state memories, optical and magnetic media, etc.

Exemplary System Platform

Various embodiments of an interactive display overlay system may beimplemented in the context of any suitable interactive display device.For example, particular embodiments may be implemented on an interactivedisplay device, touch screen display device, or any other suitablecomputing device. Various aspects of the system's functionality may beexecuted by certain system modules, including an Input Determination andInterpretation Module 300 or Input Coordinate Modification Module 400.These modules are discussed in greater detail below.

Input Determination and Interpretation Module

FIG. 3 is a flow chart of operations performed by an exemplary InputDetermination and Interpretation Module 300. In particular embodiments,the Input Determination and Interpretation Module 300 may serve as agatekeeper for detected inputs on an interactive display device betweenan underlying software application and an interactive overlayapplication that is projected over the underlying software applicationon the one or more interactive display devices 152, 156.

When executing the Input Determination and Interpretation Module 300,the system begins, at Step 310, by providing a partially transparentinteractive overlay application for use in the interactive displayoverlay system 10 a, 10 b, the interactive overlay applicationcomprising one or more widgets and being configured to run with one ormore underlying software applications in the background. In variousembodiments, the interactive display device may include any suitabledisplay device, such as any display device disclosed herein.

In various embodiments, the interactive display device is configured todisplay the one or more underlying software applications on a displayscreen associated with the interactive display device whilesimultaneously displaying the partially transparent interactive overlayapplication over at least a portion of the display screen. For example,as may be understood by one skilled in the art, the system may displayan underlying software application (e.g., a word processor, internetbrowsing application, drawing application, photo-editing application,etc.) running on a suitable operating system, while displaying theinteractive overlay application over the underlying softwareapplication. In various embodiments, the interactive overlay applicationmay include one or more user-selectable indicia which may access variousfunctionality associated with the interactive overlay application (e.g.,accessing one or more widgets, modifying one or more settings associatedwith the interactive overlay application, etc.).

In various embodiments, the interactive overlay application operates tofilter input data so that input data meant for the interactive overlayapplication is acted upon by the interactive overlay application withouthaving any effect on the underlying one or more software applicationsand information meant for the one or more software applications is sentback to the interactive display with instructions to forward the inputdata to the one or more underlying software applications. In this way,input data meant for the interactive overlay application will not affector inadvertently change the focus of the one or more softwareapplications running under the interactive overlay application. Thus,the interactive overlay application, when running, functions as an inputdata filter, allowing particular data meant for the interactive overlayapplication to be used by this application while forwarding all otherdata back to the interactive display device with instructions to beforwarded to the one or more software applications.

In particular embodiments, the one or more widgets comprise any suitablewidget such as, for example, a compass, a ruler or other suitablestraight edge, a protractor, a drafting T-square, a drafting triangle, adrafting scale, a French curve ruler, a ship curve tool, an arc ruler,or any other suitable widget, drafting tool, etc. In particularembodiments, the one or more widgets may be any suitable widget whichmay, for example, be useful for the purposes of interacting with the oneor more underlying software applications. For example, as will bedescribed in more detail below, the one or more widgets may include asuitable drawing tool such as a protractor or compass, which the systemmay use to modify a user's input to follow a curve of the protractor orto draw a circle using the compass. As will be understood by one skilledin the art, the system may be configured to use (e.g., use) othersuitable tools to modify detected input points to follow or otherwisetrace an edge of the one or more widgets in the one or more underlyingsoftware applications.

Returning to Step 320, the system continues by detecting an input on theinteractive display device. In various embodiments, the system maydetect an input via physical contact from a user of the interactivedisplay device (e.g., a touch input or a pen input), detect input via asuitable input device (such as a mouse or other pointer device), or inany other suitable manner. In various embodiments, the system detects atype of input and a location of an input when detecting an input. Forexample, when detecting an input on the interactive display device, thesystem may determine that the input was a touch input and that the inputoccurred at a particular location (e.g., coordinate location) on theinteractive display device. In various embodiments, the detected inputcomprises an “x” position and a “y” position (e.g., an absolute xposition and an absolute y position).

In various embodiments, the detected input may include a multi-touchinput. In other embodiments, the system may determine, for each input,additional input data such as, for example, an input button (e.g., leftmouse button, right mouse button, forward button, etc.). In particularembodiments, the system may be configured to detect a plurality ofsimultaneous inputs. In various embodiments, an input protocol utilizedby the interactive display device may determine what data the systemdetermines at the detection of an input by the interactive displaydevice. In particular inputs, detecting the input may activate theinteractive overlay application. In various embodiments, the interactivedisplay overlay system 10 a, 10 b detects an input in response toreceiving an indication of an input from a suitable input deviceoperatively coupled to the system. For example, the system may receivean indication from any suitable input device described herein such as,for example, a touch screen display, an interactive whiteboard 160, etc.

The system continues, at Step 330, by transmitting data related to theinput to the interactive overlay application when in a first mode. Invarious embodiments, the data related to the input may include, forexample, a location (e.g., coordinate location) and type of the input.In particular embodiments, when the system is in the first mode, theinteractive overlay application is running and the interactive displaydevice transmits input data using a private protocol, which may, forexample, comprise a data type that the interactive overlay applicationis configured to interpret but that the underlying software applicationis not configured to interpret. In various embodiments, the interactiveoverlay application is configured to instruct the interactive displaydevice to report detected inputs by transmitting packets according tothe first mode (e.g., according to a first protocol) where the firstmode is a mode other than a standard mode traditionally used by the oneor more underlying software applications (e.g., or an underlyingoperating system) to detect and interpret inputs (e.g., such as the HIDprotocol and/or related protocols).

In particular embodiments, the first mode (e.g., the first protocol)comprises any suitable protocol that the interactive overlay applicationcan use to determine the input data (e.g., such as a location of theinput on the interactive display device and the type of input). Invarious embodiments, transmitting the data in the first mode enables theinteractive overlay application to act as a gatekeeper (e.g., a screen)for inputs detected by the interactive display device before thosedetected inputs are transmitted to the one or more underlying softwareapplications (e.g., because the one or more underlying softwareapplications or operating systems are not configured to interpret thedata in the first mode).

Continuing to Step 340, the system determines, using the interactiveoverlay application, whether a location of the detected input comprisesthe one or more widgets. In various embodiments, determining whether thelocation of the detected input comprises the one or more widgetscomprises determining whether the interactive display device isdisplaying a portion of the one or more widgets at the input location.For example, the system may be checking whether the detected input wason the one or more widgets or away from the one or more widgets. Invarious embodiments, the system makes the determination by comparing alocation of the input (e.g., a coordinate location such as an ‘x,y’location) with a location of the one or more widgets that may make upthe interactive overlay application.

Returning to Step 350, the system, in response to determining that thelocation of the detected input comprises the one or more widgets,modifies the one or more widgets or the interactive display applicationbased on the input. In various embodiments, modifying the one or morewidgets based on the input comprises performing the type of input on theone or more widgets at the location of the input. Modifying the one ormore widgets may include, for example: (1) moving the one or morewidgets; (2) resizing the one or more widgets; (3) rotating the one ormore widgets; or (4) adjusting a size, shape, orientation, etc. of theone or more widgets to any location. For example, the system may, in aparticular embodiment, interpret a detected input that occurs in thesame location as the one or more widgets as follows, and modify the oneor more widgets accordingly: (1) single finger tap: click or select theone or more widgets at the location; (2) single finger motion: move theselected one or more widgets; (3) two finger motion with both fingersmoving towards each other or apart in different directions:pan/scale/rotate, etc. the selected one or more widgets based on themotion of the two fingers, and/or (4) make any other suitablemodification based on the input.

In various embodiments, in response to determining that the location ofthe detected input comprises the one or more widgets, the system isconfigured to not transmit any input data to the underlying one or moresoftware applications. In such embodiments, an underlying softwareapplication would not receive any input following an input detected on awidget (e.g., or other indicia) on the interactive overlay application.For example, for the underlying software application, in variousembodiments, it would be as if no input occurred at all if a detectedinput is determined by the system to have occurred on a widget or otherindicia that the interactive overlay application comprises.

Returning to Step 360, the system, in response to determining that thelocation of the detected input does not comprise the one or morewidgets: (1) modifies the data related to the input from the first modeto a second mode; and (2) transmits the data related to the input to theone or more underling software applications in the second mode. Inparticular embodiments, the standard protocol is a mode traditionallyused by the one or more underlying software applications (e.g., or anunderlying operating system) to detect and interpret inputs (e.g., suchas the HID protocol and/or related protocols). In various embodiments,the system modifies the data related to the input from the first mode tothe second mode by modifying the data from the first mode to a secondmode based on the standard protocol.

In various embodiments, the system transmits the data in the second modevia any suitable packet (e.g., a standard packet). In particularembodiments, when the system transmits the data related to the input tothe one or more underlying software applications in the second mode, theone or more underlying software applications “see” and interpret theinput as though the system never determined whether the input occurredat a location intended for the interactive overlay application (e.g.,the underlying system receives and responds to the input as it would astandard input directly from an input device). For example, in responseto receiving the transmitted data related to the input in the secondmode, the one or more underlying software applications may, in variousembodiments, modify the one or more underlying software applicationsbased on the input (e.g., modify the one or more underlying applicationsbased on the type of input at the location of the input). In still otherembodiments, the system may transmit the data related to the input inthe same format in which it received the data at the interactive overlaylayer.

Although the above module is described in the context of an input, itshould be understood be one skilled in the art that various embodimentsof the system may be configured to detect simultaneous inputs (e.g., aplurality of substantially instantaneous inputs (e.g., instantaneousinputs)). It should be further understood that in various embodiments,the system is configured to substantially continuously detect an input(e.g., or inputs) and process each particular detected input accordingto the module described herein. Although the module is described aboveas comprising various steps, it should be understood that particularother embodiments of such a module may incorporate additional steps,omit certain described steps, perform the described steps in an orderother than in which they are presented, or otherwise modify the modulein any other suitable manner.

Input Coordinate Modification Module

FIG. 4 is a flow chart of operations performed by an exemplary InputCoordinate Modification Module 400. In particular embodiments, theexemplary Input Coordinate Modification Module 400 may modify inputsdetected within a particular distance of one or more widgets running aspart of an interactive overlay application to correspond to an edgelocation of the one or more widgets, and pass the modified input throughto an underlying software application in a format interpretable by theunderlying software application (e.g., a mode other than the mode inwhich the input was initially received by the overlay application).

When executing the exemplary Input Coordinate Modification Module 400,the system begins, at Step 410, by providing a partially transparentinteractive overlay application for use with in interactive displaydevice, the interactive overlay application comprising one or morewidgets (e.g., a widget) and being configured to run with one or moreunderlying software applications (e.g., one or more operating systems,one or more drawing applications, etc.) in the background. In variousembodiments, the interactive display device may include any suitabledisplay device, such as any display device disclosed herein.

In various embodiments, the interactive display device is configured todisplay the one or more underlying software applications on a displayscreen associated with the interactive display device whilesimultaneously displaying the partially transparent interactive overlayapplication over at least a portion of the display screen. In otherembodiments, the interactive display device may project the one or moreunderlying software applications and the overlay application on asuitable projection screen. For example, as may be understood by oneskilled in the art, the system may display an underlying softwareapplication (e.g., a word processor, internet browsing application,drawing application, photo-editing application, etc.) running on asuitable operating system, while displaying the interactive overlayapplication over the underlying software application. In variousembodiments, the interactive overlay application may include one or moreuser-selectable indicia which may access various functionalityassociated with the interactive overlay application (e.g., accessing oneor more widgets, modifying one or more setting associated with theinteractive overlay application, etc.).

In particular embodiments, the one or more widgets comprise any suitablewidget such as, for example, a compass, a ruler or other suitablestraight edge, a protractor, a drafting T-square, a drafting triangle(e.g., set square), a drafting scale, a French curve ruler, a ship curvetool, an arc ruler, or any other suitable widget, drafting tool, etc. Inparticular embodiments, the one or more widgets may be any suitablewidget which may, for example, be useful for the purposes of interactingwith the one or more underlying software applications. For example, aswill be described in more detail below, the one or more widgets mayinclude a suitable drawing tool such as a protractor, which the systemmay use to modify a user's input to follow a curve of the protractor. Aswill be understood by one skilled in the art, the system may beconfigured to use (e.g., use) other suitable tools to modify detectedinput points to follow or otherwise trace an edge of the one or morewidgets in the one or more underlying software applications.

Returning to Step 420, the system continues by detecting an input on theinteractive display device. In various embodiments, the system maydetect an input via physical contact from a user of the interactivedisplay device (e.g., a touch input or a pen input), detect input via asuitable input device (such as a mouse or other pointer device), or inany other suitable manner. In various embodiments, the system detects atype of input and a location of an input when detecting an input. Forexample, when detecting an input on the interactive display device, thesystem may determine that the input was a touch input and that the inputoccurred at a particular location (e.g., coordinate location) on theinteractive display device. In various embodiments, the detected inputcomprises an “x” position and a “y” position (e.g., an absolute xposition and an absolute y position).

In various embodiments, the detected input may include a multi-touchinput. In other embodiments, the system may determine, for each input,additional input data such as, for example, an input button (e.g., leftmouse button, right mouse button, forward button, etc.). In particularembodiments, the system may be configured to detect a plurality ofsimultaneous inputs. In various embodiments, an input protocol utilizedby the interactive display device may determine what data the systemdetermines at the detection of an input by the interactive displaydevice.

In particular embodiments, the system is configured to detect the inputusing the interactive overlay application. In such embodiments, theinteractive overlay application may serve as a gatekeeper for any inputsinto the system (e.g., via the interactive display device).

The system continues, at Step 430, by transmitting data related to theinput to the interactive overlay application in a first mode. In variousembodiments, the data related to the input may include, for example, alocation (e.g., coordinate location) and type of the input. Inparticular embodiments, the first mode comprises a private protocolwhich may, for example, comprise a data type that the interactiveoverlay application is configured for interpreting but that theunderlying software application is not configured to interpret. Invarious embodiments, the interactive overlay application is configuredto instruct the interactive display device to report detected inputs bytransmitting packets according to the first mode (e.g., according to afirst protocol) where the first mode is a mode other than a standardmode traditionally used by the one or more underlying softwareapplications (e.g., or an underlying operating system) to detect andinterpret inputs (e.g., such as the HID protocol and/or relatedprotocols).

In particular embodiments, the first mode (e.g., the first protocol)comprises any suitable protocol that the interactive overlay applicationcan use to determine the input data (e.g., such as a location of theinput on the interactive display device). In various embodiments,transmitting the data in the first mode enables the interactive overlayapplication to act as a gatekeeper (e.g., a screen) for inputs detectedby the interactive display device before those detected inputs aretransmitted to the one or more underlying software applications (e.g.,because the one or more underlying software applications or operatingsystems are not configured to interpret the data in the first mode).

Continuing to Step 440, the system determines, using the interactiveoverlay application, whether a location of the detected input is withina particular distance of the one or more widgets but does not comprisethe one or more widgets. In various embodiments, the particular distancecomprises a particular physical distance (e.g., less than about 10 mm,between about 5 mm and 10 mm, less than about ¼ inch, or any othersuitable distance). In other embodiments, the particular distance is aparticular number of pixels. In various embodiments, the particulardistance is based on a size and/or resolution of a display (e.g., adisplay screen) associated with the interactive display device. Inparticular embodiments, the system is configured to enable a user to setthe particular distance (e.g., to adjust the particular distance byincreasing or decreasing the particular distance). In still otherembodiments, the particular distance may vary based on a type of widgetthe input is detected near. In still other embodiments, the system isconfigured to enable a user to adjust the particular distance based ontype of widget. In yet other embodiments, the particular distance is afunction of the device used to touch the screen (e.g., the user'sfinger, an electronic pen, etc.).

In various embodiments, the system determines whether the location ofthe detected input is within the particular distance based on a distancefrom the detected input location to the nearest point on the nearbywidget (e.g., the nearest perpendicular distance, the Manhattandistance, etc.).

Returning to Step 450, the system, in response to determining that thelocation of the detected input is within the particular distance of theone or more widgets but does not comprise the one or more widgets,modifies the data related to the input such that a modified location ofthe detected input corresponds to an edge of the one or more widgetsadjacent the location of the detected input. The system may, forexample, interpret an input near an edge of a widget as being on theedge of the widget and modify the input location data accordingly tocorrespond to the edge of the widget. For example, the system may modifylocation data associated with the detected input (e.g., an x,y location)to correspond to a nearest edge of the adjacent widget. The system maymodify the location based on the nearest edge that makes up part of theadjacent widget (e.g., based on Manhattan distance) in any suitablemanner.

Continuing to Step 460, the system, in some embodiments, modifies thedata related to the input comprising the modified location of thedetected input to a second mode and transmits the modified data relatedto the input to the one or more underlying software applications in thesecond mode. In such embodiments, the system essentially transmits themodified location (e.g., the location on the edge of the widget ratherthan the actual, detected input adjacent the widget) to the underlyingsoftware application (e.g., or underlying operating system). In variousembodiments, the system modifies the data to the second mode asdiscussed above. In some embodiments, the system modifies the locationdata and sends the modified data back to the input device withinstructions to forward the modified data to the underlying softwareapplication,

In various embodiments, the system is configured to substantiallycontinuously (e.g., continuously) modify inputs to correspond to an edgeof a widget (e.g., following an initial determination that a particulardetected input was within a particular distance of a widget). In suchembodiments, this may enable a user to use a widget (e.g., any suitableoverlay tool) to trace the edge of the widget in an underlying softwareapplication (e.g., draw along the edge, write text along the edge,etc.). In various embodiments, the system is configured to perform thefunctions described herein for every input the system receives while theoverlay application is running.

Although the above module is described in the context of an input, itshould be understood by one skilled in the art that various embodimentsof the system may be configured to detect simultaneous inputs (e.g., aplurality of substantially instantaneous (e.g., instantaneous inputs)).It should be further understood that in various embodiments, the systemis configured to substantially continuously detect an input (e.g., orinputs) and process each particular detected input according to themodule described herein. Although the module is described above ascomprising various steps, it should be understood that particular otherembodiments of such a module may incorporate additional steps, omitcertain described steps, perform the described steps in an order otherthan in which they are presented, or otherwise modify the module in anyother suitable manner.

Exemplary User Experience

FIGS. 5-11 depict screen displays that represent an exemplary userexperience which a user may, in various embodiments encounter when usingparticular embodiments of the system (e.g., when using an interactivedisplay device that includes the interactive overlay system).

As may be understood from FIG. 5, a user interface 500 may include oneor more underlying software applications (e.g., such as a drawingprogram such as Microsoft Paint as shown in the example shown in thisfigure) as well as a widget selection indicia 600 that makes up part ofan interactive overlay application. As may be understood from thisfigure, the user interface 500 may include any suitable interfacedisplayed on any suitable interactive display device (e.g., touchscreendevice, or other suitable touchscreen device). As may be understood fromthis figure and this disclosure, the underlying software application, inthe embodiment shown in this figure, does not include the widgetselection indicia 600 that is part of the interactive overlayapplication that the system is substantially simultaneously displayingon the interactive display device.

In the user interface 500 shown in this figure, a user may interact withthe underlying software application normally (e.g., as the user wouldwithout the interactive overlay application running) in addition tointeracting with the interactive overlay application (e.g., by selectingthe widget selection indicia 600). As shown in FIG. 6, in response toselection, by the user, of the widget selection indicia 600, the systemis configured to expand a widget selection toolbar 602, from which theuser may select a particular widget 610, 612, 614, 616, 618, 620 for usewith the underlying software application. In various embodiments, suchas the embodiment shown in this exemplary user interface, a user mayminimize (e.g., hide) the widget selection toolbar 602 by againselecting the widget selection indicia 600 (e.g., while the widgetselection toolbar 602 is expanded).

In various embodiments, the widget selection toolbar 602 comprises aplurality of widgets 610, 612, 614, 616, 618, 620 such as, for example:(1) a protractor widget 610; (2) a ruler widget 612; (3) a T-squarewidget 614; (4) a compass widget 616; (5) a set square widget 618 (e.g.,a triangle widget); and/or (6) a French curve widget 620. As may beunderstood by one skilled in the art, the plurality of widgets mayinclude any other suitable widget, such as any other widget (e.g., ortool) described in this disclosure, or any other additional suitablewidget which may be useful in the context of the system describedherein. In various embodiments, the widget selection toolbar 602 furthercomprises: (1) scroll arrows 622, 624 which a user may, for example useto scroll among other available widgets; and (2) a trash can indicia626, which a user may, for example, use to drag widgets that a user nolonger wishes to use.

In particular embodiments, a user may select any of the plurality ofwidgets 610, 612, 614, 616, 618, 620 for use with the underlyingsoftware application by, for example: (1) selecting the particulardesired widget; (2) dragging the particular desired widget out of thewidget selection toolbar 602 (e.g., onto another portion of the userinterface or display; (3) etc. The user may, for example, drag theprotractor widget 610 from the widget selection toolbar 602 into theuser interface 500 until a protractor widget tool 650 appears on theuser interface 500 for use by the user as shown in FIG. 7. As may beunderstood by one skilled in the art, the protractor widget tool 650shown in FIG. 7 is part of the interactive overlay application that isrunning over the underlying background software application that thesystem is also displaying on the user interface 500.

As shown in FIGS. 7 and 8, a user may interact with the protractorwidget tool 650 by: (1) moving the protractor widget tool 650; (2)resizing the protractor widget tool 650; (3) rotating the protractorwidget tool 650; or (4) adjusting a size, shape, orientation, etc. ofthe protractor widget tool 650 to any location or orientation desired bythe user. In various embodiments, the user interactive overlayapplication is configured to enable the user to interact with theprotractor widget tool 650 in any suitable way. As shown in FIGS. 7-8,the user has moved the protractor widget tool 650, rotated theprotractor widget tool 650 clockwise to the right about forty-fivedegrees (e.g., about one eight of a turn), and increased the size of theprotractor widget tool 650.

FIG. 8 depicts the protractor widget tool 650 in a position in which theuser has placed the protractor widget tool 650 for use with theunderlying software application. As may be understood from this figure,the system may be configured to detect input at any location on the userinterface (e.g., at point 702, at point 704, at point 706, etc.). Asshown in FIG. 8: (1) point 702 is located on the protractor widget tool650 (e.g., located in a location on the user interface 500 thatcomprises the protractor widget tool 650); (2) point 704 is located offof the protractor widget tool 650 but in a location that is close to theprotractor widget tool 650 (e.g., is a location within a particularshort distance of the protractor widget tool 650 but that does notcomprise the protractor widget tool 650); and (3) point 706 is locatedoff of the protractor widget tool 650 (e.g., does not comprise theprotractor widget tool 650).

The user may, for example, select a point 702 on the user interface thatincludes the protractor widget tool 650. In the embodiment shown in thisfigure, the system may, for example: (1) detect an input on theinteractive display device at point 702; (2) transmit data related tothe input (e.g., including the input point 702) to the interactiveoverlay application in a first mode (e.g., as a private event); (3)determine that the point 702 comprises the protractor widget tool 650;and (4) in response to determining that the point 702 comprises theprotractor widget tool 650, modifying the protractor widget tool 650based on the data related to the input. Modifying the protractor widgettool 650 may include, for example, selecting the protractor widget tool650; moving the protractor widget tool 650; resizing the protractorwidget tool 650; rotating the protractor widget tool 650; etc. Invarious embodiments, modifying the protractor widget tool 650 based onthe input data may include modifying the protractor widget tool 650based on a type of input (e.g., multi-touch, left click, right click,etc.) or any other suitable modification.

The user may alternatively, for example, select a point 706 on the userinterface that does not include the protractor widget tool 650. Invarious embodiments, the system may, for example: (1) detect an input onthe interactive display device at point 706; (2) transmit data relatedto the input (e.g., including the input point 706) to the interactiveoverlay application in a first mode (e.g., as a private event); (3)determine that the point 706 does not comprise the protractor widgettool 650; and (4) in response to determining that the point 706 does notcomprise the protractor widget tool 650: (a) modifying the data to asecond mode (e.g., to a native event); and (b) transmitting the data tothe underlying software application in the second mode (e.g., by sendingthe modified data to the input device with instructions to forward themodified data to the underlying software program).

The user may also, for example, select a point 704 on the user interfacethat does not include the protractor widget tool 650 but is in alocation that is close to the protractor widget tool 650 (e.g., iswithin a particular distance of the protractor widget tool 650). Invarious embodiments, the interactive overlay application is configuredto determine that a point 704 is close if it is within a particulardistance of the protractor widget tool 650 (e.g., within a certainnumber of pixels, within a certain distance, etc.) The system may, forexample: (1) detect an input on the interactive display device at point704; (2) transmit data related to the input (e.g., including the inputpoint 704) to the interactive overlay application in a first mode (e.g.,as a private event); and (3) determine that the point 704 is within aparticular distance of the protractor widget tool 650 but does notcomprise the protractor widget tool 650.

Continuing to FIG. 9, the system may, in response to determining thatthe location of the detected input (e.g., the point 704) is within theparticular distance of the protractor widget tool 650 but does notcomprise the protractor widget tool, modify the point 704 to a modifiedpoint 704′ that corresponds to an edge of the protractor widget tool 650that is adjacent the point 704. The system then, in various embodiments,modifies the data related to the input to comprise the modified point704′ and transmits the modified data to the underlying softwareapplication in the second mode. In various embodiments, the underlyingsoftware application is configured to receive the modified input dataand respond as the underlying software application would respond to anyother input. For example, the underlying software application would, ina particular example in which the underlying software application is adrawing application, apply a drawing at the modified point 704′ (e.g.,place a mark at the modified point 704′).

As may be understood from this figure, the system is configured suchthat the underlying software application only receives an input at themodified point 704′—the interactive overlay application receives thepoint 704 of actual input by the user, acts as a gatekeeper (e.g., afilter) and modifies the point 704 to a modified point 704′ tocorrespond to the edge of the protractor widget tool 650 prior topassing data including the modified point 704′ on to the underlyingsoftware application.

In various embodiments, the system is configured to substantiallycontinuously perform the above point modification subsequent todetecting an initial input that is within the particular distance of theprotractor widget tool 650 but does not comprise the protractor widgettool. FIG. 10 depicts a modified curve 705′ that the underlying softwareapplication (e.g., drawing application) produces in response to aparticular user input curve 705 (e.g., free-hand curve).

Regarding FIG. 10, as discussed above, in various embodiments, theinteractive overlay application is configured to determine that a point704 is close if it is within a particular distance of the protractorwidget tool 650 (e.g., within a certain number of pixels, within acertain distance, etc.) The system may, for example: (1) detect an inputon the interactive display device at point 704; (2) transmit datarelated to the input (e.g., including the input point 704) to theinteractive overlay application in a first mode (e.g., as a privateevent); (3) determine that the point 704 is within a particular distanceof the protractor widget tool 650 but does not comprise the protractorwidget tool 650; (4) in response to determining that the location of thedetected input (e.g., the point 704) is within the particular distanceof the protractor widget tool 650 but does not comprise the protractorwidget tool, modify the point 704 to a modified point 704′ thatcorresponds to an edge of the protractor widget tool 650 that isadjacent the point 704; and (5) modify the data related to the input tocomprise the modified point 704′ and transmits the modified data to theunderlying software application in the second mode.

In response to the user continuing input following the initial input(e.g., at point 704), for example, by dragging their finger along userinput curve 705 to point 704 a on a touchscreen display, the system isconfigured to substantially continuously (e.g., continuously) modifyevery input point along input curve 705 such that the system converts aplurality of input points along input curve 705 to correspond to theedge of the protractor widget tool 650. As shown in FIG. 10, theresultant modified curve 705′ (e.g., curved line drawn by the underlyingsoftware drawing application) comprises a plurality of modified points.As should be understood in light of this figure, the system (e.g., theinteractive overlay application) is configured to modify the user input(e.g., at the overlay layer prior to passing the modified input throughto the underlying software application) to follow the edge of the curveof the protractor widget tool 650 to form the modified curve 705′regardless of any deviation by the user in: (1) distance of actual inputfrom the protractor widget tool 650; (2) smoothness of input followinginitial input at point 704; and/or (3) etc. In various embodiments, thesystem is configured to follow the curve (e.g., the shape of the widget)by modifying the user's actual input to follow the edge of the widgetbased on: (1) a direction of input by the user following an initialinput within the particular distance of the widget (e.g., which way theuser drags their finger or fingers); (2) a length of input by the userfollowing an initial input within the particular distance of the widget(e.g., how far the user drags their finger or fingers or for how long);etc. FIG. 11 depicts the resultant modified curve 705′ on the underlyingsoftware application (e.g., drawings application) after the user hasmoved the protractor widget tool 650 following drawing of the resultantmodified curve 705′.

Although the above example of continuous modification is described inthe context of continuous modification following initial input, itshould be understood that the system may be configured to trace thecurve (e.g., follow the edge) of a particular widget in any othersuitable manner. The system may, for example, detect an input within aparticular distance of the widget and: (1) modify a particular number ofsubsequent detected inputs to correspond to an edge of the widget (e.g.,the next two inputs, three inputs, four inputs, ten inputs, or any othersuitable number of inputs); (2) modify a subsequent continuous inputfollowing an initial static input within the particular distance of thewidget; and/or (3) modify any other suitable manner of input by the userto correspond to an edge of any suitable widget (e.g., or widgets).

Although the above user experience is described in the context of aprotractor widget tool 650, it should be understood that the interactiveoverlay system may be utilized with other suitable widgets in otherembodiments, such as any widget described in this document or any othersuitable widget. For example, a user may an experience similar to theabove-described user experience using, for example: (1) a protractorwidget 610; (2) a ruler widget 612; (3) a T-square widget 614; (4) acompass widget 616; (5) a set square widget 618 (e.g., a trianglewidget); and/or (6) a French curve widget 620 shown in FIG. 6.

Alternative Embodiments

Various embodiments of an interactive overlay system may includefeatures in addition to those described above. Various exemplaryalternative embodiments are described below.

In various embodiments, the system is configured to, for every inputdetected on an interactive display device, determine whether the inputis: (1) on a widget that is part of an overlay application; (2) off anywidget that is part of an overlay application; or (3) within aparticular distance of a widget but also off any widget that is part ofan overlay application. In particular embodiments, the system is thenconfigured, for every detected input, to take a suitable action based onthe determined location of the input at the overlay level (e.g., such asany suitable location based on the location discussed herein).

In particular embodiments the system is configured to enable multipleusers to interact with (e.g., use) multiple widgets substantiallysimultaneously on a single interactive display. In such embodiments, thesystem may enable multiple active tools (e.g., multiple protractors) ona single overlay layer. In other embodiments, the system may beconfigured to run a plurality of overlay applications substantiallysimultaneously (e.g., simultaneously). In such embodiments, the systemmay pass any input on any particular overlay layer through to anultimate, underlying software application after determining that theinput was not intended for that particular overlay layer. In suchembodiments, the system may alternatively pass any inputs determined tono be for a particular overlay layer on to the next overlay layerimmediately behind the particular overlay layer.

In various embodiments, the system is configured to break a particularinteractive display device into a sub-coordinate system (e.g., into aplurality of work areas such as four quadrants). In such embodiments,the system may be configured to enable distinct individuals to interactwith the interactive display device and use one or more widgets as partof the overlay on each distinct portion of the display (e.g., in each oftheir respective quadrants). In such embodiments, the main overlayapplication is assigned a global coordinate system and each quadrant isassigned a quadrant coordinate system such that an input is translatedfrom the global coordinate system into the respective quadrantcoordinate system, In this way, a single overlay application can trackand allow multiple users to simultaneously use the same interactiveoverlay application.

CONCLUSION

Many modifications and other embodiments of the invention will come tomind to one skilled in the art to which this invention pertains havingthe benefit of the teachings presented in the foregoing descriptions andthe associated drawings. For example, the interactive overlayapplication may be utilized with any suitable underlying softwareapplication, operating system, or other application, user interface,etc. The interactive overlay system may be utilized in any suitablecontext (e.g., such as a classroom, by an individual such as an artist,etc.) using any suitable device (e.g., an interactive display such as aninteractive projector, touchscreen device, etc.) Therefore, it is to beunderstood that the invention is not to be limited to the specificembodiments disclosed and that modifications and other embodiments areintended to be included within the scope of the appended claims.Although specific terms are employed herein, they are used in a genericand descriptive sense only and not for the purposes of limitation.

What is claimed is:
 1. An interactive display system comprising: a. oneor more processors; and b. an interactive display device operativelycoupled to the one or more processors, wherein the interactive displaysystem is configured for: i. providing an interactive overlayapplication for use with the interactive display device, the interactiveoverlay application comprising one or more widgets and being configuredto run with one or more underlying software applications in thebackground on the interactive display system; ii. detecting an input onthe interactive display device; iii. determining input data related tothe input, the input data comprising at least a location of the input;iv. transmitting a first packet comprising the input data to theinteractive overlay application, the first packet comprising a privatepacket; v. determining, using the interactive overlay application,whether the location of the input comprises one widget of the one of theone or more widgets on the interactive display device: in response todetermining that the location of the input comprises the one widget ofthe one or more widgets, modifying the one widget based on the inputdata; in response to determining that the location of the input does notcomprise the one widget of the one or more widgets: modifying the firstpacket to a second packet, the second packet comprising a standardpacket; and transmitting the second packet to the one or more underlyingsoftware applications; vi. determining, by the interactive overlayapplication, whether the location of the input is within a particulardistance of the one widget of the one or more widgets; and in responseto determining that the location of the input is within the particulardistance of the one widget and the location of the input does notcomprise the one widget: modifying the input location to a modifiedinput location that corresponds to an edge of the one widget adjacentthe input location; modifying the first packet to a third packetcomprising the modified input location, the third packet comprising astandard packet; and transmitting the third packet to the one or moreunderlying software applications, such that the interactive displaysystem transmits the modified input location to the one or moreunderlying software applications rather than the input location.
 2. Theinteractive display system of claim 1, wherein the interactive displaysystem is further configured for, in response to determining that thelocation of the input comprises the one widget, not transmitting anydata related to the input to the one or more underlying softwareapplications.
 3. The interactive display system of claim 1, wherein theinteractive display system is further configured for continuouslydetecting one or more inputs on the interactive display device, and, foreach respective input of the one or more inputs: (1) determining whethera location of each respective input comprises the one widget; and (2)determining whether each respective input is within the particulardistance of the one widget.
 4. The interactive display system of claim1, wherein: a. the input is an initial input; and b. the interactivedisplay system is further configured for: i. detecting a plurality ofcontinuous inputs following the initial input; and ii. for eachrespective continuous input: modifying a location of the each respectivecontinuous input to correspond to an edge of the one widget mostadjacent the input location to generate a plurality of modifiedcontinuous input locations along the edge; and transmitting a pluralityof packets comprising the plurality of modified continuous inputlocations to the one or more underlying software applications.
 5. Aninteractive display system comprising: a. one or more processors; and b.an interactive display device operatively coupled to the one or moreprocessors, wherein the interactive display system is configured for: i.providing an interactive overlay application for use with theinteractive display device, the interactive overlay applicationcomprising one or more widgets and being configured to run with one ormore underlying software applications in the background on theinteractive display system; ii. detecting an input on the interactivedisplay device; iii. determining input data related to the input, theinput data comprising at least a location of the input; iv. transmittingthe input data to the interactive overlay application according to afirst protocol; v. determining, using the interactive overlayapplication, whether the location of the input comprises the one or morewidgets on the interactive display device; in response to determiningthat the location of the input comprises the one or more widgets,modifying the one or more widgets based on the input data; and inresponse to determining that the location of the input does not comprisethe one or more widgets: modifying the input data based on a secondprotocol to second input data; and transmitting the second input data tothe one or more underlying software applications; vi. determining, bythe interactive overlay application, whether the location of the inputis within a particular distance of the one or more widgets; and vii. inresponse to determining that the location of the input is within theparticular distance of the one or more widgets and the location of theinput does not comprise the one or more widgets: modifying the inputlocation to a modified input location that corresponds to an edge of theone or more widgets most adjacent the input location; modifying theinput data to include the modified input location based on the secondprotocol to generate modified formatted input data; and transmitting themodified formatted input data to the one or more underlying softwareapplications, such that the one or more underlying software applicationsreceive the modified input location rather than the input location. 6.The interactive display system of claim 5, wherein the one or morewidgets are selected from a group consisting of: (1) a protractorwidget; (2) a ruler widget; (3) a French curve widget; and (4) a setsquare widget.
 7. The interactive display system of claim 5, wherein: a.the input is an initial input; and b. the interactive display system isfurther configured for: detecting a plurality of continuous inputsfollowing the initial input; and for each respective continuous input:modifying a location of the each respective continuous input tocorrespond to an edge of the one or more widgets most adjacent the inputlocation to generate a plurality of modified continuous input locations;and transmit the modified continuous input locations to the one or moreunderlying software applications.
 8. The interactive display system ofclaim 7, wherein: a. the one or more widgets comprise a protractorwidget tool; b. the one or more underlying software applicationscomprise a software drawing application; and c. transmitting themodified continuous input locations to the one or more underlyingsoftware applications cause the software drawing application to draw acurve that substantially corresponds to a curve that forms the edge ofthe protractor widget tool.
 9. The interactive display system of claim5, wherein the interactive overlay application serves as an inputgatekeeper to the one or more underlying software applications.
 10. Asystem for providing virtual tools on a touch enabled displaycomprising: a. at least one processor; b. a touch enabled displayoperatively coupled to the at least one processor, the touch enableddisplay being adapted to: i. detect one or more contact points at asurface of the touch enabled display; ii. send data related to one ormore contact points, in a first mode to one or more applications runningon the at least one processor; and in a second mode to a virtual toolapplication running on the at least one processor in the background;wherein the at least one processor is configured for: i. receiving aninput by a user that activates a virtual tool application; ii. at leastpartially in response to receiving the input, running the virtual toolapplication in the background; iii. at least partially in response torunning the virtual tool application, changing the touch enabled displayfrom the first mode to the second mode such that data related to the oneor more contact points are sent to the virtual tool application; iv.allowing a user to select a first tool from the virtual toolapplication; and v. at least partially in response to allowing the userto select the first tool, facilitating use of the selected first tool,wherein facilitating use of the selected first tool comprises: receivingdata associated with a first contact point by the virtual toolapplication while in the second mode; determining if the first contactpoint is adjacent the selected first tool; and at least partially inresponse to determining that the first contact point is adjacent theselected first tool: modifying the first contact point to a modifiedcontact point; and sending second data associated with the first contactpoint from the virtual tool application to the touch enabled displaywith instructions to send the second data to the one or moreapplications, the second data comprising the modified contact point,such that the one or more applications running on the at least oneprocessor receive the modified contact point rather than the firstcontact point.
 11. The system of claim 10, wherein the at least oneprocessor is further configured for: a. allowing a user to select afirst tool from the virtual tool application; and b. at least partiallyin response to allowing the user to select the first tool, facilitatemovement of the selected first tool from a first location on the touchenabled display to a second location on the touch enabled display. 12.The system of claim 11, wherein facilitating movement of the selectedfirst tool further comprises: a. receiving data associated with a firstcontact point by the virtual tool application while in the second mode;and b. determining if the first contact point was one of: i. on thefirst tool; or ii. adjacent the first tool.
 13. The system of claim 12,wherein: a. if the first contact point is on the first tool, move thefirst tool in accordance with the data associated with the first contactpoint and data associated with one or more additional contact points; orb. if the first contact point is adjacent the first tool, determine ifthe first contact point is within a predetermined distance from an edgeof the first tool.
 14. The system of claim 13, wherein: a. if the firstcontact point is within the predetermined distance from an edge of thefirst tool, move the first tool in accordance with the data associatedwith the first contact point; and b. if the first contact point is notwithin the predetermined distance, send the data associated with thefirst contact point back to the touch enabled display with instructionsto forward the data to the one or more applications.
 15. The system ofclaim 10, wherein determining if the first contact point is adjacent thefirst tool further comprises determining if the first contact point iswithin a predetermined distance from an edge of the selected first tool.16. The system of claim 10, wherein the second data causes the at leastone processor to send at least some of the second data to the one ormore applications.
 17. The system of claim 16, wherein the one or moreapplications is selected from a group consisting of: a. a drawingapplication; b. a presentation application; c. a word processingapplication; d. a teaching application; and e. an architectural draftingapplication.